package br.com.academy.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import br.com.academy.entidades.Endereco;

@Stateless
public class EnderecoDao {
	@PersistenceContext(name = "academy")
	private EntityManager entity;

	// Metodo Atualizar
	public void atualizar(Endereco pessoa) {
		entity.merge(pessoa);
	}

	// Metodo Remover
	public void remove(Endereco pessoa) {
		entity.remove(entity.merge(pessoa));
	}

	public Endereco getPessoa(Long id) {
		Endereco pessoa = entity.find(Endereco.class, id);
		return pessoa;

	}

	// Listar todos os Pessoas
	public List<Endereco> getPessoas() {
		CriteriaBuilder cb = entity.getCriteriaBuilder();
		CriteriaQuery<Endereco> cq = cb.createQuery(Endereco.class);
		Root<Endereco> from = cq.from(Endereco.class);
		CriteriaQuery<Endereco> select = cq.select(from);
		List<Endereco> pessoas = entity.createQuery(select).getResultList();
		return pessoas;
	}

	// Pesquisa por nome (case sensitive)
	public List<Endereco> pesqBeanNome(String nomePesq) {
		CriteriaBuilder cb = entity.getCriteriaBuilder();
		CriteriaQuery<Endereco> cq = cb.createQuery(Endereco.class);
		Root<Endereco> from = cq.from(Endereco.class);
		CriteriaQuery<Endereco> select = cq.select(from).where(
				cb.like(from.<String> get("nome"), "%" + nomePesq + "%"));
		List<Endereco> funcs = entity.createQuery(select).getResultList();
		return funcs;
	}

	// Metodo Salvar
	public void salvar(Endereco pessoa) {
		entity.persist(pessoa);
	}

}
